﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Spore.SQL
{
    //===========================================================================
    // 抽象标记
    //===========================================================================
    public abstract class Token
    {
        public abstract string Value { get;}
        public override string ToString()
        {
            return Value.ToString();
        }
    }

    //===========================================================================
    // 左括号
    //===========================================================================
    public class LP : Token
    {
        public override string Value
        {
            get
            {
                return "(";
            }
        }
    }

    //===========================================================================
    // 右括号
    //===========================================================================
    public class RP : Token
    {
        public override string Value
        {
            get
            {
                return ")";
            }
        }
    }

    //===========================================================================
    // 数值
    //===========================================================================
    public class Operand : Token
    {
        private string val;
        public Operand(string value)
        {
            val = value;
        }

        public override string Value
        {
            get
            {
                return val;
            }
        }
    }

    //===========================================================================
    // 操作符
    //===========================================================================
    public class Oper : Token
    {
        private string op;
        public Oper(string oper)
        {
            op = oper;
        }

        public override string Value
        {
            get
            {
                return op;
            }
        }
    }
}